a11y: Fix removing mnemonic widgets
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 17 Dec 2020 15:49:00 +0000 (15:49 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Thu, 17 Dec 2020 15:49:00 +0000 (15:49 +0000)
We must not use the variadic arguments version with GList, as it expects
a pointer to a GtkAccessible.

gtk/gtkwidget.c

index 9204d6221028714117b70ba522a13b50021c7b77..b26103e87b6c98cec371d8c5f2f6a5a37fe0dff7 100644 (file)
@@ -9504,12 +9504,16 @@ gtk_widget_remove_mnemonic_label (GtkWidget *widget,
 
   if (new_list != NULL && new_list->data != NULL)
     {
-      GList *list;
+      GtkAccessibleRelation relation = GTK_ACCESSIBLE_RELATION_LABELLED_BY;
+      GValue value = G_VALUE_INIT;
 
-      list = gtk_widget_list_mnemonic_labels (widget);
-      gtk_accessible_update_relation (GTK_ACCESSIBLE (widget),
-                                      GTK_ACCESSIBLE_RELATION_LABELLED_BY, list,
-                                      -1);
+      /* The ATContext takes ownership of the GList returned by list_mnemonic_labels(),
+       * so we don't need to free it
+       */
+      gtk_accessible_relation_init_value (relation, &value);
+      g_value_set_pointer (&value, gtk_widget_list_mnemonic_labels (widget));
+      gtk_accessible_update_relation_value (GTK_ACCESSIBLE (widget), 1, &relation, &value);
+      g_value_unset (&value);
     }
   else
     {